{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "collapsed": true,
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% \n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [],
   "source": [
    "train_df = pd.read_csv('train.csv',nrows = 10000000,dtype=object)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "outputs": [
    {
     "data": {
      "text/plain": "a99f214a    8148098\nc357dbff      17287\n936e92fb       4627\nafeffc18       1645\ncef4c8cc       1258\n             ...   \n14a792e7          1\n6f280ec0          1\n5b3b1c47          1\nd1e28f1c          1\nf071fce0          1\nName: device_id, Length: 786741, dtype: int64"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 3
    }
   ],
   "source": [
    "train_df.device_id.value_counts()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [
    {
     "data": {
      "text/plain": "<matplotlib.axes._subplots.AxesSubplot at 0x15fdf58e588>"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 4
    },
    {
     "data": {
      "text/plain": "<Figure size 936x648 with 1 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyQAAAIXCAYAAABtk5qzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3de7SeVXkv7N9tAoLKSQluINigonIQAwkQhU1TFAy2CqJUqBZU+qXDop8Oe5AeRrGoLbW2RVt1D0algHUDHupntkUROahQNQREUBBJlcoStkQOAiIC6fz+WE/oMi7Iaa1MyHtdY7zjfZ/7mc+c91pjDczP5/BWay0AAAA9PKF3AwAAwOgSSAAAgG4EEgAAoBuBBAAA6EYgAQAAuhFIAACAbmb2buCxbvvtt29z5szp3QYAADxuXXnllT9urc2abJ9AsgZz5szJsmXLercBAACPW1X1n4+0zyVbAABANwIJAADQjUACAAB04x4SADbIgw8+mLGxsdx///29W+lmiy22yOzZs7PZZpv1bgXgcUcgAWCDjI2NZauttsqcOXNSVb3b2ehaa7n99tszNjaWXXfdtXc7AI87LtkCYIPcf//9edrTnjaSYSRJqipPe9rTRvoMEcCGEEgA2GCjGkZWGfWfH2BDCCQAAEA3AgkAU+6mm27KXnvt1bsNAB4HBBIANlkrV67s3QIAayCQADAtHnrooRx//PHZe++98+pXvzr33XdfTjnllOy3337Za6+9snjx4rTWkiQLFy7MO97xjuy///55znOek6985StJkjPPPDNHHXVUFi1alN122y1/9Ed/9PD8X/jCF/LCF74w++67b44++ujce++9SZI5c+bklFNOyUEHHZRPfOITk/a2cOHCvO1tb8uLXvSi7LXXXlm6dGmS5I477siRRx6ZvffeOwsWLMg111yTJPnSl76UuXPnZu7cudlnn31yzz33TNvvDWDUCCQATIsbbrghixcvzjXXXJOtt946H/rQh/LmN785V1xxRb71rW/lZz/7WT772c8+PP6hhx7K0qVLc9ppp+Uv/uIvHq5fffXVOe+883LttdfmvPPOy80335wf//jHefe7350vfvGLueqqqzJ//vz83d/93cPHbLHFFrnssstyzDHHPGJ/P/3pT/Pv//7v+dCHPpQ3vvGNSZKTTz45++yzT6655pr85V/+ZY477rgkyfve97588IMfzNVXX52vfOUr2XLLLaf61wUwsnwPCQDTYpdddsmBBx6YJHnd616XD3zgA9l1113z3ve+N/fdd1/uuOOO7Lnnnnn5y1+eJDnqqKOSJPPmzctNN9308DwvfvGLs8022yRJ9thjj/znf/5n7rrrrlx33XUPz//AAw/khS984cPHvOY1r1ljf8cee2yS5OCDD87dd9+du+66K5dddlk+9alPJUkOOeSQ3H777fnJT36SAw88MG9/+9vz2te+NkcddVRmz569gb8dAFYRSACYFqs/Creq8nu/93tZtmxZdtlll7zzne/8he/ueOITn5gkmTFjRh566KFfqk/c11rLoYcemnPOOWfStZ/85CevV3+rLiFbvX7SSSfl13/913P++ednwYIF+eIXv5jnPe95a1wDgDVzyRYA0+IHP/hBvvrVryZJzjnnnBx00EFJku233z733ntvPvnJT6733AsWLMjll1+e5cuXJ0nuu+++fPe7312nOc4777wkyWWXXZZtttkm22yzTQ4++OB87GMfS5Jceuml2X777bP11lvnP/7jP/L85z8/73jHOzJ//vx85zvfWe/eAfhFzpAAMC123333nHXWWfnd3/3d7LbbbnnTm96UO++8M89//vMzZ86c7Lfffus996xZs3LmmWfm2GOPzc9//vMkybvf/e485znPWes5tttuu7zoRS/K3XffnTPOOCNJ8s53vjNveMMbsvfee+dJT3pSzjrrrCTJaaedlksuuSQzZszIHnvskcMPP3y9ewfgF9Vkp6f5b/Pnz2/Lli3r3QbAY9b111+f3XffvXcb62ThwoV53/vel/nz50/ZnI/H3wPAxlJVV7bWJv2Prku2AACAblyyBcAm68QTT8zll1/+C7W3vvWtufTSS/s0BMAvEUgA2GR98IMf7N0CAGvgki0AAKAbZ0g2knl/ePaUz3nl3xw35XMCAMDG5AwJAADQjUACwMj5/Oc/n+c+97l59rOfnVNPPbV3OwAjzSVbAHQ11Ze0ruly1pUrV+bEE0/MhRdemNmzZ2e//fbLK17xiuyxxx5T2gcAa8cZEgBGytKlS/PsZz87z3zmM7P55pvnmGOOyWc+85nebQGMLIEEgJHywx/+MLvsssvD27Nnz84Pf/jDjh0BjDaBBICR0lr7pVpVdegE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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(13, 9))\n",
    "sns.countplot(x=\"device_conn_type\", hue=\"banner_pos\",data=train_df)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [
    {
     "data": {
      "text/plain": "                     id click      hour    C1 banner_pos   site_id  \\\n0   1000009418151094273     0  14102100  1005          0  1fbe01fe   \n1  10000169349117863715     0  14102100  1005          0  1fbe01fe   \n2  10000371904215119486     0  14102100  1005          0  1fbe01fe   \n3  10000640724480838376     0  14102100  1005          0  1fbe01fe   \n4  10000679056417042096     0  14102100  1005          1  fe8cc448   \n\n  site_domain site_category    app_id app_domain  ... device_type  \\\n0    f3845767      28905ebd  ecad2386   7801e8d9  ...           1   \n1    f3845767      28905ebd  ecad2386   7801e8d9  ...           1   \n2    f3845767      28905ebd  ecad2386   7801e8d9  ...           1   \n3    f3845767      28905ebd  ecad2386   7801e8d9  ...           1   \n4    9166c161      0569f928  ecad2386   7801e8d9  ...           1   \n\n  device_conn_type    C14  C15 C16   C17 C18 C19     C20  C21  \n0                2  15706  320  50  1722   0  35      -1   79  \n1                0  15704  320  50  1722   0  35  100084   79  \n2                0  15704  320  50  1722   0  35  100084   79  \n3                0  15706  320  50  1722   0  35  100084   79  \n4                0  18993  320  50  2161   0  35      -1  157  \n\n[5 rows x 24 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>click</th>\n      <th>hour</th>\n      <th>C1</th>\n      <th>banner_pos</th>\n      <th>site_id</th>\n      <th>site_domain</th>\n      <th>site_category</th>\n      <th>app_id</th>\n      <th>app_domain</th>\n      <th>...</th>\n      <th>device_type</th>\n      <th>device_conn_type</th>\n      <th>C14</th>\n      <th>C15</th>\n      <th>C16</th>\n      <th>C17</th>\n      <th>C18</th>\n      <th>C19</th>\n      <th>C20</th>\n      <th>C21</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1000009418151094273</td>\n      <td>0</td>\n      <td>14102100</td>\n      <td>1005</td>\n      <td>0</td>\n      <td>1fbe01fe</td>\n      <td>f3845767</td>\n      <td>28905ebd</td>\n      <td>ecad2386</td>\n      <td>7801e8d9</td>\n      <td>...</td>\n      <td>1</td>\n      <td>2</td>\n      <td>15706</td>\n      <td>320</td>\n      <td>50</td>\n      <td>1722</td>\n      <td>0</td>\n      <td>35</td>\n      <td>-1</td>\n      <td>79</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>10000169349117863715</td>\n      <td>0</td>\n      <td>14102100</td>\n      <td>1005</td>\n      <td>0</td>\n      <td>1fbe01fe</td>\n      <td>f3845767</td>\n      <td>28905ebd</td>\n      <td>ecad2386</td>\n      <td>7801e8d9</td>\n      <td>...</td>\n      <td>1</td>\n      <td>0</td>\n      <td>15704</td>\n      <td>320</td>\n      <td>50</td>\n      <td>1722</td>\n      <td>0</td>\n      <td>35</td>\n      <td>100084</td>\n      <td>79</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>10000371904215119486</td>\n      <td>0</td>\n      <td>14102100</td>\n      <td>1005</td>\n      <td>0</td>\n      <td>1fbe01fe</td>\n      <td>f3845767</td>\n      <td>28905ebd</td>\n      <td>ecad2386</td>\n      <td>7801e8d9</td>\n      <td>...</td>\n      <td>1</td>\n      <td>0</td>\n      <td>15704</td>\n      <td>320</td>\n      <td>50</td>\n      <td>1722</td>\n      <td>0</td>\n      <td>35</td>\n      <td>100084</td>\n      <td>79</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>10000640724480838376</td>\n      <td>0</td>\n      <td>14102100</td>\n      <td>1005</td>\n      <td>0</td>\n      <td>1fbe01fe</td>\n      <td>f3845767</td>\n      <td>28905ebd</td>\n      <td>ecad2386</td>\n      <td>7801e8d9</td>\n      <td>...</td>\n      <td>1</td>\n      <td>0</td>\n      <td>15706</td>\n      <td>320</td>\n      <td>50</td>\n      <td>1722</td>\n      <td>0</td>\n      <td>35</td>\n      <td>100084</td>\n      <td>79</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>10000679056417042096</td>\n      <td>0</td>\n      <td>14102100</td>\n      <td>1005</td>\n      <td>1</td>\n      <td>fe8cc448</td>\n      <td>9166c161</td>\n      <td>0569f928</td>\n      <td>ecad2386</td>\n      <td>7801e8d9</td>\n      <td>...</td>\n      <td>1</td>\n      <td>0</td>\n      <td>18993</td>\n      <td>320</td>\n      <td>50</td>\n      <td>2161</td>\n      <td>0</td>\n      <td>35</td>\n      <td>-1</td>\n      <td>157</td>\n    </tr>\n  </tbody>\n</table>\n<p>5 rows × 24 columns</p>\n</div>"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 5
    }
   ],
   "source": [
    "train_df.head()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [
    {
     "data": {
      "text/plain": "<matplotlib.axes._subplots.AxesSubplot at 0x111e58e5848>"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 6
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train_df['site_id'])"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [
    {
     "data": {
      "text/plain": "<matplotlib.axes._subplots.AxesSubplot at 0x111eb4d28c8>"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 7
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "sns.countplot(train_df['site_domain'])\n",
    "plt.figure()\n",
    "sns.countplot(train_df['site_category'])"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "sub_train = train_df.iloc[:, 8:]\n",
    "list(sub_train)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": true
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "for str in list(sub_train):\n",
    "    plt.figure(figsize=(13, 9))\n",
    "    sns.countplot(sub_train[str])"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": true
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  },
  "pycharm": {
   "stem_cell": {
    "cell_type": "raw",
    "source": [],
    "metadata": {
     "collapsed": false
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}